package com.feeyin.radar.crm.dao;

import java.math.BigDecimal;
import java.util.List;

import com.feeyin.radar.commons.Page;
import com.feeyin.radar.crm.model.ContractCaseType;
import com.feeyin.radar.crm.model.Customer;
import com.feeyin.radar.crm.model.ProcessGroup;

public abstract interface CustomerDAO
{
  public abstract List getCustomers();

  public abstract List getCustomersByDynamic(Customer paramCustomer);

  public abstract List getRepeatCustomersByDynamic(Customer paramCustomer);

  public abstract List getPageCustomersByDynamic(Customer paramCustomer, Page paramPage);

  public abstract Integer getPageCustomersCountByDynamic(Customer paramCustomer);

  public abstract List getPageRepeatCustomersByDynamic(Customer paramCustomer, Page paramPage);

  public abstract Integer getPageRepeatCustomersCountByDynamic(Customer paramCustomer);

  public abstract List getCustomersByDeptId(Integer paramInteger);

  public abstract Customer getCustomerById(Integer paramInteger);

  public abstract Customer getCustomerByCustomerCode(String paramString);

  public abstract Customer getCustomerSaleInfoById(Integer paramInteger);

  public abstract Integer getCustomersCountByDynamic(Customer paramCustomer);

  public abstract BigDecimal getTotalPredictCostByDynamic(Customer paramCustomer);

  public abstract BigDecimal getPeriodPredictCost(Integer paramInteger, String paramString);

  public abstract boolean insertCustomer(Customer paramCustomer);

  public abstract boolean updateCustomer(Customer paramCustomer);

  public abstract boolean updateCustomerByParam(Customer paramCustomer);

  public abstract boolean updateCustomerByStaticParam(Customer paramCustomer);

  public abstract boolean updateCustomerShare(Integer paramInteger, String paramString);

  public abstract boolean deleteCustomer(Integer paramInteger);

  public abstract List getOldCustomerContractInfo(Customer paramCustomer);

  public abstract List getCustomerCountByIndustry(Customer paramCustomer);

  public abstract List getCustomerCountByArea(Customer paramCustomer);

  public abstract List getCustomerCountByCompanyType(Customer paramCustomer);

  public abstract List getAllCustomerInfoForContract(Customer paramCustomer);

  public abstract Integer getCountOldCustomerContractInfo(Customer paramCustomer);

  public abstract Integer getCountAllCustomerInfoForContract(Customer paramCustomer);

  public abstract List getCustomerCountByIndustryByAll(Customer paramCustomer);

  public abstract List getCustomerCountByAreaByAll(Customer paramCustomer);

  public abstract List getCustomerCountByCompanyTypeByAll(Customer paramCustomer);

  public abstract List getEveryMonthNewCustomerCount(Customer paramCustomer);

  public abstract List getTotalYearNewCustomerCount(Customer paramCustomer);

  public abstract List getDeptNameCustomer(Customer paramCustomer);

  public abstract Integer getDeptNameCustomerCount(Customer paramCustomer);

  public abstract List getOwnNameCustomer(Customer paramCustomer);

  public abstract Integer getOwnNameCustomerCount(Customer paramCustomer);

  public abstract List getMyShareCustomer(Customer paramCustomer);

  public abstract Integer getMyShareCustomerCount(Customer paramCustomer);

  public abstract List getDeptSucceedContract(Customer paramCustomer);

  public abstract Integer getDeptSucceedContractCount(Customer paramCustomer);
  
	public Integer getPageCaseTypeCountByDynamic(ContractCaseType caseType);
	
	public List<ContractCaseType> getPageCaseTypesByDynamic(ContractCaseType caseType,Page page);
	
	public Integer getPageProcessGroupCountByDynamic(ProcessGroup processGroup);
	
	public List<ProcessGroup> getPageProcessGroupByDynamic(ProcessGroup processGroup,Page page);
 
}